package cn.topevery.garden.entity.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.topevery.garden.entity.po.GreFile;
import cn.topevery.garden.entity.serializer.GeometrySerializer;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.locationtech.jts.geom.Geometry;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 古树名木表 视图
 *
 * @author code-generate
 * @date 2022-03-30
 */
@Data
@ApiModel(value = "GreTreeFamous 视图", description = "古树名木表 视图")
public class GreTreeFamousVO extends ExcelImportVO implements Serializable {
    /**
     * 自增id
     */
    private Integer id;

    /**
     * UUID
     */
    @ApiModelProperty(value = "UUID")
    @Excel(name = "UUID", orderNum = "0")
    private String treeId;

    /**
     * 编号
     */
    @ApiModelProperty(value = "编号")
    @Excel(name = "编号(必填)", orderNum = "0")
    private String code;

    /**
     * 中文名
     */
    @ApiModelProperty(value = "中文名")
    @Excel(name = "中文名(必填)", orderNum = "0")
    private String name;

    /**
     * 拉丁名
     */
    @ApiModelProperty(value = "拉丁名")
    @Excel(name = "拉丁名", orderNum = "0")
    private String nameLatin;

    /**
     * 科名
     */
    @ApiModelProperty(value = "科名")
    @Excel(name = "科名", orderNum = "0")
    private String treeKind;

    /**
     * 属名
     */
    @ApiModelProperty(value = "属名")
    @Excel(name = "属名", orderNum = "0")
    private String treeAttr;

    /**
     * 坐标X
     */
    @ApiModelProperty(value = "坐标X")
    @Excel(name = "84坐标系-X坐标", orderNum = "0")
    private Double lng;

    /**
     * 坐标Y
     */
    @ApiModelProperty(value = "坐标Y")
    @Excel(name = "84坐标系-Y坐标", orderNum = "0")
    private Double lat;

    /**
     * 国家2000坐标X
     */
    @ApiModelProperty(value = "国家2000坐标X")
    @Excel(name = "国家2000-X坐标", orderNum = "0")
    private Double lng2000;

    /**
     * 国家2000坐标Y
     */
    @ApiModelProperty(value = "国家2000坐标Y")
    @Excel(name = "国家2000-Y坐标", orderNum = "0")
    private Double lat2000;

    /**
     * 生长场所
     */
    @ApiModelProperty(value = "生长场所")
    @Excel(name = "生长场所", orderNum = "0")
    private String growPlace;

    /**
     * 小地名
     */
    @ApiModelProperty(value = "小地名")
    @Excel(name = "地址", orderNum = "0")
    private String address;

    /**
     * 小地名2
     */
    @ApiModelProperty(value = "小地名2")
    @Excel(name = "小地名", orderNum = "0")
    private String addressTwo;

    /**
     * 权属
     */
    @ApiModelProperty(value = "权属")
    @Excel(name = "权属", orderNum = "0")
    private String power;

    /**
     * 管理单位
     */
    @ApiModelProperty(value = "责任部门")
    @Excel(name = "责任部门", orderNum = "0")
    private String manage;

    /**
     * 管理单位Id
     */
    @ApiModelProperty(value = "管理单位Id")
    @Excel(name = "责任部门Id", orderNum = "0")
    private String manageId;

    /**
     * 养护单位ID
     */
    @ApiModelProperty(value = "养护单位ID")
    @Excel(name = "养护单位ID", orderNum = "0")
    private String maintainDeptId;

    /**
     * 养护单位
     */
    @ApiModelProperty(value = "养护单位")
    @Excel(name = "巡护单位", orderNum = "0")
    private String maintainDept;

    /**
     * 是否挂牌 0 挂 1 不挂
     */
    @ApiModelProperty(value = "是否挂牌 0 挂 1 不挂")
    @Excel(name = "是否挂牌", orderNum = "0", replace = {"是_0", "否_1"})
    private Integer isGp;

    /**
     * 物种起源
     */
    @ApiModelProperty(value = "物种起源")
    @Excel(name = "物种起源", orderNum = "0")
    private String source;

    /**
     * 树高
     */
    @ApiModelProperty(value = "树高")
    @Excel(name = "树高/m", orderNum = "0")
    private Double treeHeight;

    /**
     * 树龄
     */
    @ApiModelProperty(value = "树龄")
    @Excel(name = "树龄", orderNum = "0")
    private Integer treeOld;

    /**
     * 保护等级 1：一级 2： 二级 3： 三级
     */
    @ApiModelProperty(value = "保护等级 1：一级 2： 二级 3： 三级")
    @Excel(name = "保护等级", orderNum = "0", replace = {"一级_1", "二级_2", "三级_3"})
    private Integer protectLevel;

    /**
     * 保护等级
     */
    @ApiModelProperty(value = "保护等级")
    @Excel(name = "保护等级", orderNum = "0")
    private String protectLevelName;

    /**
     * 胸围
     */
    @ApiModelProperty(value = "胸围")
    @Excel(name = "胸径/cm", orderNum = "0")
    private Double treeWidth;

    /**
     * 地围
     */
    @ApiModelProperty(value = "地围")
    @Excel(name = "地围/cm", orderNum = "0")
    private Double dewei;

    /**
     * 树形
     */
    @ApiModelProperty(value = "树形")
    @Excel(name = "树形", orderNum = "0")
    private String treeState;

    /**
     * 东西冠幅
     */
    @ApiModelProperty(value = "东西冠幅")
    @Excel(name = "东西冠幅", orderNum = "0")
    private Double eastWestCrown;

    /**
     * 南北冠幅
     */
    @ApiModelProperty(value = "南北冠幅")
    @Excel(name = "南北冠幅", orderNum = "0")
    private Double northSouthCrown;

    /**
     * 平均冠幅
     */
    @ApiModelProperty(value = "平均冠幅")
    @Excel(name = "平均冠幅", orderNum = "0")
    private Double avgCrown;

    /**
     * 海拔
     */
    @ApiModelProperty(value = "海拔")
    @Excel(name = "海拔/m", orderNum = "0")
    private Double altitude;

    /**
     * 坡向
     */
    @ApiModelProperty(value = "坡向")
    @Excel(name = "坡向", orderNum = "0")
    private String aspect;

    /**
     * 坡度
     */
    @ApiModelProperty(value = "坡度")
    @Excel(name = "坡度", orderNum = "0")
    private String slope;

    /**
     * 坡位
     */
    @ApiModelProperty(value = "坡位")
    @Excel(name = "坡位", orderNum = "0")
    private String status;

    /**
     * 土壤类型
     */
    @ApiModelProperty(value = "土壤类型")
    @Excel(name = "土壤类型", orderNum = "0")
    private String soil;

    /**
     * 紧密度
     */
    @ApiModelProperty(value = "紧密度")
    @Excel(name = "紧密度", orderNum = "0")
    private String tightness;

    /**
     * 生长势
     */
    @ApiModelProperty(value = "生长势")
    @Excel(name = "生长势", orderNum = "0")
    private String growType;

    /**
     * 生长环境
     */
    @ApiModelProperty(value = "生长环境")
    @Excel(name = "生长环境", orderNum = "0")
    private String growAmbient;

    /**
     * 栽植人
     */
    @ApiModelProperty(value = "栽植人")
    @Excel(name = "栽植人", orderNum = "0")
    private String plantUser;

    /**
     * 栽植时间
     */
    @ApiModelProperty(value = "栽植时间")
    @Excel(name = "栽植时间", orderNum = "0")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime plantDate;

    /**
     * 古树历史
     */
    @ApiModelProperty(value = "古树历史")
    @Excel(name = "古树历史", orderNum = "0")
    private String history;

    /**
     * 鉴定记载
     */
    @ApiModelProperty(value = "鉴定记载")
    @Excel(name = "鉴定记载", orderNum = "0")
    private String record;

    /**
     * 树木奇特性状描述或生长环境描述
     */
    @ApiModelProperty(value = "树木奇特性状描述或生长环境描述")
    @Excel(name = "奇特性状/生长环境描述", orderNum = "0")
    private String longDesc;

    /**
     * 俗名
     */
    @ApiModelProperty(value = "俗名")
    @Excel(name = "俗名", orderNum = "0")
    private String nameComm;

    /**
     * 特点
     */
    @ApiModelProperty(value = "特点")
    @Excel(name = "特点", orderNum = "0")
    private String treeTrait;

    /**
     * 调查号
     */
    @ApiModelProperty(value = "调查号")
    @Excel(name = "调查号", orderNum = "0")
    private String examineCode;

    /**
     * 名木类别 1 古树，2名木
     */
    @ApiModelProperty(value = "名木类别 1 古树，2名木")
    @Excel(name = "树木类型", orderNum = "0", replace = {"古树_1", "名木_2"})
    private Integer famousTypeId;

    /**
     * 名木类别f
     */
    @ApiModelProperty(value = "名木类别")
    @Excel(name = "名木类别", orderNum = "0")
    private String famousTypeName;

    /**
     * 联系人
     */
    @ApiModelProperty(value = "联系人")
    @Excel(name = "联系人", orderNum = "0")
    private String maintainUser;

    /**
     * 群落编号
     */
    @ApiModelProperty(value = "群落编号")
    @Excel(name = "群落编号", orderNum = "0")
    private String communityCode;

    /**
     * 是否防护 0：false 1：true
     */
    @ApiModelProperty(value = "是否防护 0：false 1：true")
    @Excel(name = "是否防护 0：false 1：true", orderNum = "0")
    private Boolean isProtect;

    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    @Excel(name = "描述", orderNum = "0")
    private String desc;

    /**
     * 数据发布 0 false 1 ture
     */
    @ApiModelProperty(value = "数据发布 0 false 1 ture")
    @Excel(name = "数据发布 0 false 1 ture", orderNum = "0")
    private Boolean dataPublic;

    /**
     * 年份/用来判断树龄
     */
    @ApiModelProperty(value = "年份/用来判断树龄")
    @Excel(name = "年份/用来判断树龄", orderNum = "0")
    private Integer year;

    /**
     * 台账编号
     */
    @ApiModelProperty(value = "台账编号")
    @Excel(name = "台账编号", orderNum = "0")
    private String codeTwo;

    /**
     * 审核状态
     */
    @ApiModelProperty(value = "审核状态")
    @Excel(name = "审核状态", orderNum = "0")
    private Boolean state;

    /**
     * 栽种单位
     */
    @ApiModelProperty(value = "栽种单位")
    @Excel(name = "栽种单位", orderNum = "0")
    private String plantUnits;

    /**
     * 图层名称
     */
    @ApiModelProperty(value = "图层名称")
    @Excel(name = "图层名称", orderNum = "0")
    private String objName;

    /**
     * 普查图片地址
     */
    @ApiModelProperty(value = "普查图片地址")
    @Excel(name = "普查图片地址", orderNum = "0")
    private String fileUrl;

    /**
     * 范围
     */
    @ApiModelProperty(value = "范围")
    @JSONField(serializeUsing = GeometrySerializer.class, deserializeUsing = GeometrySerializer.class)
    private Geometry mapRanges;

    /**
     * 计算空间数据
     */
    @ApiModelProperty(value = "计算空间数据")
    @Excel(name = "计算空间数据", orderNum = "0")
    private String geoWkt;

    private List<GreFile> fileList;

    private String totalNumber;

    private String type;

    private String typeName;

    @ApiModelProperty("数据校验是否通过")
    private Boolean isPass;

    @ApiModelProperty("校验错误信息")
    private String errorMessage;
}
